/*
 * Created with MyFormCompiler
 * Author: John Doe
 * Date: 14/06/2014
 * Time: 17:15
 */

using System;
using System.Windows.Forms;
using System.Drawing;
using JdFormsDll;

namespace JdFormDll.Decorator
{

	internal enum MyFormDecoratorSettings : int
	{ 
		Test1 = 0,
		Test10 = 1,
		Test11 = 2,
		Test12 = 3,
		Test13 = 4,
		Test14 = 5,
		Test15 = 6,
		Test16 = 7,
		Test17 = 8,
		Test18 = 9,
		Test19 = 10,
		Test2 = 11,
		Test20 = 12,
		Test3 = 13,
		Test4 = 14,
		Test5 = 15,
		Test6 = 16,
		Test7 = 17,
		Test8 = 18,
		Test9 = 19 
	}

	internal static class Skins
	{

		private static int Index = 0;

		internal static MyFormDecoratorSettings CurrentDecorator
		{
			get { return (MyFormDecoratorSettings)Index; }
			set { Index = (int)value; }
		}
		
		internal static void SetDecorator(MyForm Form)
		{
			Form.BackColor = BackColor;
			Form.BackColorShadow = BackColorShadow;
			Form.BorderColor = BorderColor;
			Form.TextCaptionColor = TextCaptionColor;
			Form.TextCaptionColorShadow = TextCaptionColorShadow;
			Form.ForeColor = ForeColor;
			Form.BorderStyle = BorderStyle;
			Form.CaptionBorderRoundPercent = CaptionBorderRoundPercent;
			Form.ColorsDifferencePercent = ColorsDifferencePercent;
			Form.TextCaptionAlignment = TextCaptionAlignment;
			Form.TextCaptionShadow = TextCaptionShadow;
			Form.IsResizable = IsResizable;
			Form.IsMoveable = IsMoveable;
			Form.ShowClientBorder = ShowClientBorder;
			Form.ShowCaptionBorder = ShowCaptionBorder;
			Form.ShowTooltip = ShowTooltip;
			Form.TextCaptionFont = TextCaptionFont;			
		}
		
	private static Color [] _BackColor = new Color [] {
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,192,192,192),
			Color.FromArgb(255,255,228,181),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,51,102,153),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,105,105,105),
			Color.FromArgb(255,34,139,34),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,216,191,216),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,230,230,250),
			Color.FromArgb(255,70,130,180),
			Color.FromArgb(255,144,238,144),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,173,216,230),
			Color.FromArgb(255,255,192,192) };

	internal static Color BackColor { get { return _BackColor[Index]; } }

	private static Color [] _BackColorShadow = new Color [] {
			Color.FromArgb(255,0,0,139),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,255,165,0),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,171,172,223),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,105,105,105),
			Color.FromArgb(255,34,139,34),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,0,0,139),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,0,0,139),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,240,248,255),
			Color.FromArgb(255,255,250,240) };

	internal static Color BackColorShadow { get { return _BackColorShadow[Index]; } }

	private static Color [] _BorderColor = new Color [] {
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,220,220,220),
			Color.FromArgb(255,255,228,181),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,51,102,153),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,105,105,105),
			Color.FromArgb(255,34,139,34),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,216,191,216),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,144,238,144),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,173,216,230),
			Color.FromArgb(255,255,192,192) };

	internal static Color BorderColor { get { return _BorderColor[Index]; } }

	private static Color [] _TextCaptionColor = new Color [] {
			Color.FromArgb(255,0,0,128),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,255,192),
			Color.FromArgb(255,255,140,0),
			Color.FromArgb(255,171,172,223),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,128,128,128),
			Color.FromArgb(255,34,139,34),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,153,50,204),
			Color.FromArgb(255,0,0,128),
			Color.FromArgb(255,0,0,128),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,128),
			Color.FromArgb(255,0,0,128),
			Color.FromArgb(255,255,255,0),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,255,255,255),
			Color.FromArgb(255,255,255,255) };

	internal static Color TextCaptionColor { get { return _TextCaptionColor[Index]; } }

	private static Color [] _TextCaptionColorShadow = new Color [] {
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,255,128,0),
			Color.FromArgb(255,255,248,220),
			Color.FromArgb(255,51,102,153),
			Color.FromArgb(255,211,211,211),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,245,245,245),
			Color.FromArgb(255,240,248,255),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,211,211,211),
			Color.FromArgb(255,176,196,222),
			Color.FromArgb(255,240,248,255),
			Color.FromArgb(255,34,139,34),
			Color.FromArgb(255,70,130,180),
			Color.FromArgb(255,70,130,180),
			Color.FromArgb(255,70,130,180) };

	internal static Color TextCaptionColorShadow { get { return _TextCaptionColorShadow[Index]; } }

	private static Color [] _ForeColor = new Color [] {
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0),
			Color.FromArgb(255,0,0,0) };

	internal static Color ForeColor { get { return _ForeColor[Index]; } }

	private static Border3DStyle [] _BorderStyle = new Border3DStyle [] {
			Border3DStyle.RaisedOuter,
			Border3DStyle.Bump,
			Border3DStyle.SunkenOuter,
			Border3DStyle.Flat,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.RaisedOuter,
			Border3DStyle.SunkenOuter,
			Border3DStyle.SunkenOuter,
			Border3DStyle.SunkenOuter,
			Border3DStyle.SunkenOuter };

	internal static Border3DStyle BorderStyle { get { return _BorderStyle[Index]; } }

	private static Percent [] _CaptionBorderRoundPercent = new Percent [] {
			Percent.Percent20,
			Percent.Percent50,
			Percent.Percent30,
			Percent.Percent20,
			Percent.Percent30,
			Percent.Percent30,
			Percent.Percent0,
			Percent.Percent20,
			Percent.Percent20,
			Percent.Percent20,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent30,
			Percent.Percent50,
			Percent.Percent100,
			Percent.Percent0,
			Percent.Percent30,
			Percent.Percent30,
			Percent.Percent30 };

	internal static Percent CaptionBorderRoundPercent { get { return _CaptionBorderRoundPercent[Index]; } }

	private static Percent [] _ColorsDifferencePercent = new Percent [] {
			Percent.Percent10,
			Percent.Percent30,
			Percent.Percent0,
			Percent.Percent10,
			Percent.Percent0,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent10,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent0,
			Percent.Percent10 };

	internal static Percent ColorsDifferencePercent { get { return _ColorsDifferencePercent[Index]; } }

	private static ContentAlignment [] _TextCaptionAlignment = new ContentAlignment [] {
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleLeft,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter,
			ContentAlignment.MiddleCenter };

	internal static ContentAlignment TextCaptionAlignment { get { return _TextCaptionAlignment[Index]; } }

	private static Shadow [] _TextCaptionShadow = new Shadow [] {
			Shadow.Hight,
			Shadow.None,
			Shadow.Normal,
			Shadow.Normal,
			Shadow.Low,
			Shadow.Normal,
			Shadow.Low,
			Shadow.Normal,
			Shadow.Normal,
			Shadow.Normal,
			Shadow.Normal,
			Shadow.Normal,
			Shadow.Hight,
			Shadow.Normal,
			Shadow.Hight,
			Shadow.Hight,
			Shadow.Normal,
			Shadow.Hight,
			Shadow.Hight,
			Shadow.Hight };

	internal static Shadow TextCaptionShadow { get { return _TextCaptionShadow[Index]; } }

	private static bool [] _IsResizable = new bool [] {
			true,
			true,
			true,
			false,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			false,
			false,
			false };

	internal static bool IsResizable { get { return _IsResizable[Index]; } }

	private static bool [] _IsMoveable = new bool [] {
			true,
			true,
			true,
			false,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			false,
			true,
			true };

	internal static bool IsMoveable { get { return _IsMoveable[Index]; } }

	private static bool [] _ShowClientBorder = new bool [] {
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			false,
			true,
			false,
			true,
			true,
			false,
			true,
			true,
			true,
			true,
			true,
			true,
			false };

	internal static bool ShowClientBorder { get { return _ShowClientBorder[Index]; } }

	private static bool [] _ShowCaptionBorder = new bool [] {
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			false,
			true,
			false,
			true,
			true,
			false,
			true,
			true,
			true,
			true,
			true,
			true,
			false };

	internal static bool ShowCaptionBorder { get { return _ShowCaptionBorder[Index]; } }

	private static bool [] _ShowTooltip = new bool [] {
			true,
			true,
			true,
			true,
			true,
			true,
			true,
			false,
			false,
			false,
			false,
			true,
			false,
			true,
			true,
			true,
			true,
			true,
			true,
			false };

	internal static bool ShowTooltip { get { return _ShowTooltip[Index]; } }

	private static Font [] _TextCaptionFont = new Font [] {
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Regular),
			new Font("Arial",20.25f,FontStyle.Regular),
			new Font("Vivaldi",27.75f,FontStyle.Italic),
			new Font("Digital dream Fat",12f,FontStyle.Regular),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Bold),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Bold),
			new Font("Arial",14.25f,FontStyle.Bold),
			new Font("Tahoma",14.25f,FontStyle.Bold),
			new Font("Tahoma",14.25f,FontStyle.Bold),
			new Font("Tahoma",14.25f,FontStyle.Bold),
			new Font("Tahoma",14.25f,FontStyle.Bold),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Regular),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Regular),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Bold),
			new Font("Consolas",20.25f,FontStyle.Bold | FontStyle.Italic),
			new Font("Copperplate Gothic Light",14.25f,FontStyle.Regular),
			new Font("LotsOfDotz",11.25f,FontStyle.Regular),
			new Font("Verdana",15.75f,FontStyle.Bold | FontStyle.Italic),
			new Font("Verdana",15.75f,FontStyle.Bold | FontStyle.Italic),
			new Font("Verdana",15.75f,FontStyle.Bold | FontStyle.Italic) };

	internal static Font TextCaptionFont { get { return _TextCaptionFont[Index]; } }

	}
}